package es.mfp.practicos.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import es.mfp.practicos.DTO.ConsultaConsumosCriteria;
import es.mfp.practicos.dao.LineaTelefonicaDAO;
import es.mfp.practicos.domain.LineaFactura;
import es.mfp.practicos.domain.LineaTelefonica;

@Component("lineaTelefonicaService")
public class LineaTelefonicaServiceImpl implements LineaTelefonicaService {

	@Autowired
	private LineaTelefonicaDAO dao;

	@Autowired
	private LineaFacturaService lineaFacturaService;

	public void setLineaFacturaService(LineaFacturaService lineaFacturaService) {
		this.lineaFacturaService = lineaFacturaService;
	}

	public void setDao(LineaTelefonicaDAO dao) {
		this.dao = dao;
	}

	@Override
	public void actualizar(LineaTelefonica linea) {
		dao.update(linea);
	}

	@Override
	public void insertar(LineaTelefonica linea) {
		dao.insert(linea);
	}

	@Override
	public List<LineaTelefonica> getLineas() {
		return dao.getAll();
	}

	@Override
	public LineaTelefonica buscarPorNumero(String numero) {
		return dao.findByNumero(numero);
	}

	@Override
	public List<LineaTelefonica> getLineasActivas() {
		return dao.findActivas();
	}

	@Override
	public boolean esEliminable(LineaTelefonica lt) {
		ConsultaConsumosCriteria crit = new ConsultaConsumosCriteria();
		List<Long> params = new ArrayList<Long>(1);
		params.add(lt.getId());
		crit.setIdsLinea(params);
		crit.setSoloEmpleadosActivos(false);
		crit.setSoloFacturasActivas(false);
		crit.setSoloLineasActivas(false);

		List<LineaFactura> apariciones = lineaFacturaService.buscar(crit);
		if (apariciones == null || apariciones.isEmpty()) {
			return Boolean.TRUE;
		} else {
			return Boolean.FALSE;
		}

	}

	@Override
	public void eliminar(LineaTelefonica currentLinea) {
		dao.remove(currentLinea);
	}

}
